\subsection{Creación del arbol}

Una vez que ANTLR genera el arbol con la forma que nosotros queremos, lo que es necesario hacer es forzar
que los nodos del arbol que se crea sean nodos definidos por nosotros.

Es en los mismos nodos donde se calculan los atributos, ya sean sintetizados o heredados de cada parte del arbol.

ANTLR permite hacer esto simplemento extendiendo la clase ``CommonTreeAdaptor'' y reimplementando el metodo create(Token).

Para esto hicimos ``NuestroTreeAdaptor'' que extiende prescisamente de ``CommonTreeAdaptor'' y implementamos create que quedo de la siguiente manera.

\begin{verbatim}
public Object create(Token token) 
{
		if(token == null) 
			return super.create(token);
		
		String tipo = token.getText();

		if(tipo == /)
			return new NodoDivision(token);
		else if(tipo == INDICE)
			return new NodoSubSuperIndice(token);
		else if(tipo == PARENTESIS)
			return new NodoParentesis(token);
		else if(tipo == CONCAT)
			return new NodoConcatenacion(token);
		else if(tipo == VACIO)
			return new NodoVacio(token);
		else 
			return new NodoTerminal(token);
}
\end{verbatim}

Simplemente crea un tipo de nodo distinto segun el Token que venga en la creación.

En cada uno de estoso nodos se agrego el calculo de todos los atributos.

\subsection{Atributos}

Para poder lograr todos los calculos necesarios para generar el archivo postscript y mostrar
correctamente la posición de cada terminal fueron necesarios los siguientes atributos: 

\subsubsection{Sintetizados}

\begin{itemize}
	\item ancho : float
	\item alto\_superior : float
	\item alto\_inferior : float
\end{itemize}

El ancho representa el ancho total de dicha cadena, en cambio para el alto se tuvo que dividir en dos partes, 
alto\_superior que marca el alto desde la linea de referencia hacia arriba y alto\_inferior que lo hace hacia abajo.

\subsubsection{Heredados}

\begin{itemize}
	\item x : float
	\item y : float
	\item escala : float
\end{itemize}

La posición del caracter esta representado por (x, y) mientras que la escala representa como su nombre lo indica
la escala de la cadena.

\subsection{Cálculos}

Una vez representados todos los atributos en el nodo se implemento en cada uno de los tipos de nodos

\begin{itemize}
	\item NodoConcatenacion
	\item NodoParentesis
	\item NodoTerminal
	\item NodoSubSuperIndice
	\item NodoDivision
\end{itemize}

el cálculo de todos los atributos ya que este varia segun los nodos. El calculo particular de cada atributo en cada nodo
se puede ver con mucha facilidad en el código fuente y no se agrega en esta sección por este mismo motivo ya que no aporta a la idea general.